package com.itlong.cloud.app.service;

import com.alibaba.fastjson.JSONArray;
import com.itlong.cloud.POJO.DTO.app.old.AppOldIosDeviceListDTO;
import com.itlong.cloud.POJO.DTO.app.old.AppOldUserInfoDto;
import com.itlong.cloud.POJO.VO.app.old.AppOldAdVo;
import com.itlong.cloud.POJO.VO.app.old.AppOldDeviceVO;
import com.itlong.cloud.POJO.VO.app.old.AppOldPushVO;
import com.itlong.cloud.enumerate.oldapp.Message;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *     旧版APP的首页版块接口
 * </desc>
 *
 * @createDate 2017/11/21
 */
public interface IAppOldHomeService {



    /**
    * <desc>
    *    获取通知公告.
    * </desc>
    *
    * @param  userId 用户Id
    * @param  pushAutoIndex 公告信息序号（由极光推送告知APP，App再通过此序号获取对应到公告信息）
     * @param  projectId 项目编号
     * @return 通知公告
    * @author LewisLouis
    * @createDate 2017-12-05
    */
    AppOldPushVO getAppOldPushVO(String userId, String pushAutoIndex, String projectId);


    /**
    * <desc>
    *    获取广告列表.
    * </desc>
    *
    * @param userId 用户Id
     * @param projectId 项目Id
    * @return 广告信息列表
    * @author LewisLouis
    * @createDate 2017-12-05
    */
    List<AppOldAdVo> getAppOldAd(String userId, String projectId);

    /**
     * <desc>
     *      获取用户拥有的项目列表
     * </desc>
     *
     * @param userId
     * @return
     * @author Jiaqi.X
     * @createDate 2018/01/12
     */
    public List<String> getUserProjectList(String userId);

    /**
     * <desc>
     *      获取IOS设备列表
     * </desc>
     *
     * @param dto
     * @return
     * @author jiaqi.X
     * @createDate 2018/01/12
     */
    List<AppOldDeviceVO> getIosDeviceList(AppOldIosDeviceListDTO dto) throws Exception;

    /**
     * <desc>
     *      获取旧APP安卓用户设备列表
     * </desc>
     *
     * @param userId 用户id
     * @param projectId 项目id
     * @return
     * @author Jiaqi.X
     * @createDate 2017/12/28
     */
    public JSONArray getHomeDeviceByProjectId(String userId,String projectId) throws Exception;

    /**
     * <desc>
     *     旧版APP_查询用户
     * </desc>
     * @param phoneNo
     * @return
     */
    AppOldUserInfoDto getAppOldUserDtoByPhone(String phoneNo);


    /**
    * <desc>
    *    根据用户Id和用户Id获取用户项目资料列表.
    * </desc>
    *
    * @param  userId 查询条件（projectId， userId）
     *  @param projectId 项目Id，若为空字符串，则查询该用户所有项目的资料列表
    * @return 项目资料列表
    * @author LewisLouis
    * @createDate 2017-12-05
    */
    List<Map<String,Object>> getUserProject(String userId, String projectId);



    /**
    * <desc>
    *    查询用户在指定项目的有权限的门禁设备信息.
    * </desc>
    *
    * @param  userId 用户Id（查询参数）
     *@param  projectId 项目编号（查询参数）
     * @param  currentPage 当前页（查询参数）
     * @param  pageSize 单页数量 （查询参数）
     * @param cardNum 软卡号
     * @param pubKey 项目公钥
     * @return 有权限的门禁设备列表
    * @author LewisLouis
    * @createDate 2017-12-05
    */
    List<AppOldDeviceVO> getUserEntranceAuthList(String userId, String projectId, String currentPage,
                                                 String pageSize,String cardNum, String pubKey) throws Exception ;


    /**
     * <desc>
     * 查询用户在指定项目的有权限的电梯设备信息.
     * </desc>
     *
     * @param userId      用户Id（查询参数）
     * @param projectId   项目编号（查询参数）
     * @param currentPage 当前页（查询参数）
     * @param pageSize    单页数量 （查询参数）
     * @param cardNum     软卡号
     * @param pubKey      项目公钥
     * @return 有权限的电梯设备列表
     * @author LewisLouis
     * @createDate 2017-12-05
     */
    List<AppOldDeviceVO> getUserElevatorAuthList(String userId, String projectId, String currentPage,
                                                 String pageSize, String cardNum, String pubKey) throws Exception ;



    /**
     * <desc>
     *    查询用户在指定项目的有权限的云对讲设备信息.
     * </desc>
     *
     * @param userId      用户Id（查询参数）
     * @param projectId   项目编号（查询参数）
     * @param currentPage 当前页（查询参数）
     * @param pageSize    单页数量 （查询参数）
     * @param cardNum     软卡号
     * @param pubKey      项目公钥
     * @param sipAddress     sip服务器地址
     * @param sipPort      sip服务器端口
     * @param userSipAccount     sip账号
     * @param userSipPsd      sip密码
     * @return 有权限的云对讲设备列表
     * @author LewisLouis
     * @createDate 2017-12-05
     */
    List<AppOldDeviceVO> getUserIntercomAuthList(String userId, String projectId, String currentPage,
                                                 String pageSize, String cardNum, String pubKey,
                                                 String sipAddress,String sipPort,
                                                 String userSipAccount,String userSipPsd) throws Exception ;


    /**
     * <desc>
     *     旧版APP_open开门首页
     * </desc>
     * @param pushAutoIndex
     * @param phoneNo
     * @param pageSize
     * @param pageNo
     * @param projectId
     * @return
     * @throws Exception
     * *@createDate 2017/11/21
     * @author cuiduanwu
     */
    Message appOpen(String pushAutoIndex,String phoneNo,Integer pageSize,Integer pageNo,String projectId) throws Exception;


    /**
     *  <desc>
     *      旧版APP_获取用户信息
     *  </desc>
     * @param phoneNo
     * @param projectId
     * @param pswd
     * @param loginDevice
     * @param token
     * @return
     * @throws Exception
     * @createDate 2017/11/27
     * @author cuiduanwu
     */
    Message getUserInfo(String phoneNo,String projectId,String pswd,String loginDevice,String token) throws Exception;

    /**
     * <desc>
     *     旧版APP_home开门首页
     * </desc>
     * @param pushAutoIndex
     * @param phoneNo
     * @param pageSize
     * @param pageNo
     * @param projectId
     * @return
     * @throws Exception
     * @createDate 2017/11/27
     * @author cuiduanwu
     */
    Message appHome(String pushAutoIndex,String phoneNo,Integer pageSize,Integer pageNo,String projectId) throws Exception;


}
